# 注意在评测约定中规定了max{ri−li}≤min{Ri−Li}，意味着最小的区间都比最长的线段都要宽
# 故，只要过线段中点必然符合条件。不存在过线段中点还不符合条件的可能！
# 所以只要计算线段的中点即可
# 故只要2*R >= l+r 且 2*L <= l+r 就符合条件

n, m = map(int, input().split())
high = 2 * (10 ** 6) + 10  # 防越界
dp = [0] * high

for _ in range(n):
    l, r = map(int, input().split())
    dp[l + r] += 1  # 中点为(l+r)/2的线段，因为除法导致浮点数，故直接将所有数值扩大两倍避免除法

for i in range(high):
    dp[i] += dp[i - 1]  # 前缀和 S[i]表示中点小于i/2的线段有多少根

for _ in range(m):
    L, R = map(int, input().split())
    result = dp[R + R] - dp[L + L - 1]  # 差分s[R+R]-s[L+L-1]表示中点小于区间R的线段总数减去中点小于区间L的线段总数
    print(result)